<?php
defined('BASEPATH') OR exit('No direct script access allowed');

/**
 * 标签管理控制器-后台
 * 
 * @desc    标签管理
 * @version 1.0.0 直接完善文档注释
 * @date	2017年7月4日 下午5:47:59
 * 
 * @title 标签管理
 * @entry http://discovery.segway.com
 */
class Tag extends MY_Manager_Controller
{
	/** @var Lib_tag */
	public $lib_tag = null;
	
	public function __construct()
	{
		parent::__construct();
		
		$this->load->library('lib_tag');
		
		$this->set_mutable_view_var('head.title', 'Tag - Management');
		$this->set_mutable_view_var('head.keywords', '');
		$this->set_mutable_view_var('head.description', '');
		
		$this->lang->load('tag');
		
	}
	
	/**
	 * 首页 -> 列表页
	 *
	 * @return html
	 *
	 * @command pass noneurl
	 */
	public function index()
	{
		$this->listing();
	}
	
	/**
	 * 标签列表页
	 *
	 * @author  Jason
	 * @date	2017年5月23日 下午6:32:42
	 * @link    /manage/tag/listing
	 * 
	 * @date	2017年7月4日 下午6:29:49
	 */
	public function listing($page = 1, $number = 20)
	{
		$conditions = $this->lib_tag->get_conditions();
		$list = $this->lib_tag->get_tags_for_list($conditions, $page, $number);
		$data['list'] = $list;
		
		$this->load->view('manager/tag/list', $data);
	}
	
	/**
	 * 资源标签列表页
	 * 
	 * @desc	根据资源类型和ID获取它的标签
	 * @author  Jason
	 * @date	2017年5月23日 下午6:32:42
	 * 
	 * @param   string $source_type	关系的资源类型
	 * @param   number $source_id	关系的资源ID
	 * 			把参数按顺序辍到 URL 之后，用 "/" 间隔
	 * @example 如果参数为 source_type=touroute source_id=45
	 * 			那么URL为 /manage/tag/listing_ukey/touroute/45
	 * 
	 * @link    /manage/tag/listing_ukey
	 *
	 * @date	2017年7月4日 下午6:29:49
	 * 
	 * @demoParam source_type touroute
	 * @demoParam source_id 45
	 */
	public function listing_ukey($source_type, $source_id)
	{
		// MARK 这个好像已经完全被上面那个包含了 manage.tag.listing_ukey
		// FIXME 这里conditions还没用到
		$conditions = $this->lib_tag->get_conditions();
		$relations = $this->lib_tag->get_tag_relations($source_type, $source_id);
		$data['relations'] = $relations;
		
		$this->load->view('manager/tag/list_ukey', $data);
	}
	// MARK ajax 列表页
	/**
	 * 标签列表页，ajax，JSON
	 *
	 * @author  Jason
	 * @date	2017年5月23日 下午6:32:42
	 * @link    /manage/tag/ajax_listing
	 *
	 * @date	2017年7月4日 下午6:29:49
	 */
	public function ajax_listing($page = 1, $number = 20)
	{
		$conditions = $this->lib_tag->get_conditions();
		$list = $this->lib_tag->get_tags_for_list($conditions, $page, $number);
		$data['list'] = $list;
		
		Lib_json::renderSuccess($data);
	}
	
	/**
	 * 标签详情 - 编辑前信息载入
	 *
	 * @desc    编辑前信息载入
	 * @method  GET
	 * @author  Jason
	 * @date	2017年7月4日 下午6:10:57
	 *
	 * @param   number $id       ID，默认为 0，代表新增一条记录
	 * 			把参数按顺序辍到 URL 之后，用 "/" 间隔
	 * @example 如果参数为 id=3
	 * 			那么URL为 /manage/tag/detail/3
	 *
	 * @demoParam id 3
	 */
	public function detail($id = 0)
	{
		$tag = $this->lib_tag->get_tag_for_detail($id);
		if (empty($tag)) {
			$tag = [];
		}
		
		$data['content']['tag'] = $tag;
		
		$this->load->view('manager/tag/detail', $data);
	}
	
	/**
	 * 标签详情编辑提交 - 编辑完后的信息提交 - 增加 & 修改
	 *
	 * @desc    编辑完后的信息提交 - 增加 & 修改
	 * @method  POST
	 * @author  Jason
	 * @date	2017年7月4日 下午6:15:21
	 *
	 * @param   number $id		 ID，默认为 0，代表增加 & 非0代表修改
	 * ...
	 *
	 * @return  JSON	标准JSON格式响应
	 * 					结构：无
	 *
	 * @link    /manage/tag/ajax_create
	 *
	 * @command noneurl
	 */
	public function ajax_create()
	{
		if (empty($id = $this->input->post('id'))) {
			list($status, $content) = $this->lib_tag->create();
		} else {
			list($status, $content) = $this->lib_tag->update();
		}
		
		if(!$status) {
			$messageContent = Lib_json::getMessageContent($content);
			Lib_json::renderError(Lib_json::ERROR_BUSINESS, current($content), $messageContent);
		} else {
			Lib_json::renderSuccess(['data' => $content], 'success');
		}
	}
	
	/**
	 * 标签显示不显示
	 *
	 * @method  POST
	 * @author  Jason
	 * @date    2017年5月24日 上午10:26:52
	 * 
	 * @param   number $id
	 * 
	 * @return  JSON	标准JSON格式响应
	 * 
	 * @link    /manager/tag/ajax_toggle_show
	 * 
	 * @command noneurl
	 */
	public function ajax_toggle_show()
	{
		$id = $this->input->post_get('id');
		list($status, $content) = $this->lib_tag->toggle_status_enabled($id);
		
		if(!$status) {
			Lib_json::renderError(Lib_json::ERROR_BUSINESS, current($content));
		} else {
			Lib_json::renderSuccess(['data' => $content]);
		}
	}
	
}
